package com.jacklin.DTO;

import com.jacklin.entity.OrderDetail;
import com.jacklin.enums.OrderStatusEnum;
import com.jacklin.enums.PayStatusEnum;
import com.jacklin.serializer.Date2LongSerializer;
import com.jacklin.utils.EnumUtil;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 数据传输对象(专门用来传输数据的)--一个OrderMaster可能对应多天OrderDetail数据，比如：同一个订单有不同的商品
 *
 * @Author:JackLin
 * @Create 2019/3/28 17:48
 */

@Data
//@JsonInclude(JsonInclude.Include.NON_NULL)  //这个注解的意思是只返回不为空的字段
public class OrderDTO {

    private String orderId;

    private String buyerName;

    private String buyerPhone;

    private String buyerAddress;

    private String buyerOpenid;

    /**订单金额*/
    private BigDecimal orderAmount;

    /**订单状态 默认0为新下单*/
    private Integer orderStatus;

    /**支付状态 默认0位未支付*/
    private Integer payStatus;

    @JsonSerialize(using = Date2LongSerializer.class)   //加上这个注解表示createTime使用Date2LongSerializer这个类来将Date类型转换为Long类型
    private Date createTime;

    @JsonSerialize(using = Date2LongSerializer.class)
    private Date updateTime;


    private List<OrderDetail> orderDetailList;

    /**
     * 通过code来获取枚举，调用EnumUtil的getByCode的方法
     *
     * @return
     */
    @JsonIgnore //当转成Json格式时不返回该字段
    public OrderStatusEnum getOrderStatusEnum(){
        return EnumUtil.getByCode(orderStatus, OrderStatusEnum.class);
    }

    @JsonIgnore
    public PayStatusEnum getPayStatusEnum(){
        return  EnumUtil.getByCode(payStatus, PayStatusEnum.class);
    }
}
